Licensing of computer software was traditionally accomplished by providing a copy of the software and a license for each computer which was authorized to use the software. The software could be generally used only on that computer, unless it was deleted from that computer and transferred to another one together with the license. With the advent of wide spread computer networks a more efficient solution was required. A license management system allows a user to install a copy of a software program on N nodes of a network, but acquire only a limited number n of licenses, where at any time only the maximum number n copies of that program can be simultaneously run on the network. When all the available licenses are allocated, additional users requesting the use of that software must wait for a license to become available. This kind of license management system has a number of advantages for both the software vendor and the user, because it allows the user to purchase all and only the licenses really needed and, on the other hand, allows the vendor to fight software piracy.
An example of a state of the art license management system available on the market, is the License Use Management product of International Business Machines Corp.
In a typical network of interconnected computers with a license management system, as illustrated in FIG. 1, one or more of the nodes 101 act as license servers, while a plurality of nodes 103 act as clients of the license servers. The service provided by a license server 101 to its client 103 is that of granting or denying permission to run a given software program, according to the availability of a license record in the license server data base, and to the terms and conditions encoded in the license record itself. The license server usually creates and stores license records in the license data base upon processing license certificate files, which are provided by the software vendor and complement the software program to which they are related. This license data base must be locked in some way to the specific instance of the license server (hardware+software) to prevent malicious users from copying the license data base to another license server machine and multiplying the number of licenses for all the software products contained in the license data base. License certificate files may contain some encryption or checksum information that allow the license server to verify their authenticity and integrity.
The fact that a license management system is controlling the use of a given software program should be as transparent as possible to the users of that software program whereas it should be evident and beneficial to the administrator of licenses for that and other software programs. This consideration places a strong requirement on the license management system in terms of reliability and performance. The ideal license management system should be one which never causes software program failures. A back up system must be provided, so that in case of failure of a license server, a backup server can ensure the uninterrupted continuity of the service.
In a license management system, “availability” is a measure of the degree to which the system can process and satisfy incoming requests (either granting or denying permission to run) within the time limits set by the served environment. High availability systems attempt to provide a continuous service within a particular operational window by minimising causes of failure and minimising recovery time when failures occur. Usually this requires a large degree of redundancy in system components, so that the continued operation of the entire system is protected from failure of any single component. The ultimate objective is to eliminate all single points of failure in the system. This can be accomplished by having redundant components or systems, and “availability management technology” that can automate the transfer of services to those redundant components when a failure occurs. Availability is a crucial feature of license management systems, since an outage of one or more license servers of a license management system can prevent many users from running their critical applications, due to a failure to acquire a license. An obvious solution to ensure good availability would be to use well known clustering techniques. In the network data processing field, a cluster is a set of independent processors (nodes), connected over the network. A cluster constitutes a sort of “black box” which provides certain services to end users. Like any ideal black box system, the end users do not need to know which node in the cluster they are connecting to. However, common clustering techniques, aimed at increasing the overall availability of the system through server redundancy, cannot be applied in a straightforward way to license management systems because of the secure nature of the license serving environment. A redundant license server cannot simply take over the amount of licenses, served by another failing server; it must also ensure that, in no circumstances, the total number of licenses concurrently served can exceed the total number of available (i.e. purchased) licenses.
Solutions to this problem, based on a method called “majority” or “quorum”, are known, in which a certain number of license servers are configured to work cooperatively. As long as the majority of those servers is up and running and communicating with each other, all licenses are available, whereas as soon as the number of active license servers becomes less than the majority, all of the servers stop serving licenses.
The above mentioned IBM License Use Management product implents a similar “cluster” back up method, with additional security measure to allow a certain degree of flexibility, i.e. the possibility of adding a new server to the cluster while ensuring the security of the system. Such solution is very effective, however it requires the availabity of a high number of license servers (at least 3). In some cases this can be too expensive and complex, therefore a simplified method would be desirable.
It is an object of the present invention to provide a method and a system which alleviates the above drawbacks.